A field programmable gate array (FPGA) is an integrated circuit that can achieve an appropriate logical function. An FPGA normally includes logical blocks that achieve basic logical information, and switch blocks that switch connections between the logical blocks. With these blocks, the FPGA can achieve a logical function desired by a user. The logical information about the logical blocks and the data of the switch blocks that switch the connections between the logical blocks are stored in respective configuration memories, and a desired logical function is achieved in accordance with the information and the data stored in the configuration memories.
In a conventional FPGA, a static random access memory (SRAM) is used as a configuration memory. The SRAM is formed with six to eight transistors, and occupies a large area in the chip.
It is known that a nonvolatile memory is used as a configuration memory. This nonvolatile memory includes an anti-fuse element as a memory element in the intersection region between first and second wiring lines. The anti-fuse element includes a first terminal connected to the first wiring line and a second terminal connected to the second wiring line. In an example of a switch circuit that is used as a switch block, a conventional FPGA that uses an SRAM includes one or more MOS (Metal-Oxide-Semiconductor) transistors having its output(s) connected to the SRAM serving as a configuration memory. In an FPGA that uses an anti-fuse element, on the other hand, the anti-fuse element functions as a switch that opens and closes data. Accordingly, the FPGA occupies a much smaller area than an SRAM.
However, in a case where such an anti-fuse memory is used, the standby energy increases due to leakage current from a peripheral circuit, and the power supply voltage drops. Further, the inverter connected to the output terminal of the memory is broken by the hot carriers or heat generated from the current.